/**
 * @author benny.zheng
 * @data 2016-06-06
 * @description 本文件用于方便复制粘贴UI模块之用，请更新这里的说明
 *              另外，考虑到一般是放在js/src/pages/page-name/main.js，因此使用../../
 *              如果不是这个目录，请更改成正确的相对路径
 */
//----------------require--------------

var viewport = require("mlib/dom/viewport"); // viewport
var base = require("mlib/comp/base"); // 基础对象
var parseModule = require("mlib/dom/parseModule"); // 页面模块自动解析
var wechat = require("../plugin/wx/wx-api");

var ajax = require("mlib/io/ajax");
var closest = require("mlib/dom/closest");
var validator = require("../plugin/util/validator");
var getFormData = require("../plugin/util/get-form-data");
var touch = require("mlib/evt/touch");
var weuiAlert = require('../layer/weuialert');

module.exports = function(node, opts) {
    //-----------声明模块全局变量-------------
    var nodeList = null; // 存储所有关键节点
    var that = base();
    var data = null;
	var v = null;
	
    //-------------事件响应声明---------------
    var evtFuncs = {
		bindcard:function(){
			v.validate();
		},
		formatcard:function(){
			this.value = custFuncs.inputFormatter(this.value);
		}

	}

    //-------------子模块实例化---------------
    var initMod = function() {
      v = new validator("bindcard-form",[
			{
				//name 字段
				name: 'cardnum',
				regexp_cardnum:/\d{16}$/,
				display:"请输入一卡通卡号|卡号不正确",
				// 验证条件
				rules: 'required|regexp_cardnum'
			},
            {
                //name 字段
                name: 'password',
				regexp_password:/\d{6}$/,
                display:"请输入6位卡密码|请输入6位卡密码",
                // 验证条件
                rules: 'required|regexp_password'
            }
		],function(obj,evt){
			
		  if(obj.errors.length>0){
			  // 判断是否错误
              weuiAlert(obj.errors[0].message);			 

		  }else{             

			 var formData = getFormData(document.getElementById('bindcard-form')); 
			if(that.isLock()) {
				return;
			}
			that.lock();   		
             ajax({// 验证通过后提交注册
                url: data.addcard+data.ocid,
				data: {
						cardnum:formData.cardnum,
						password:formData.password
					},
				method: "post",
                onSuccess: function(res) {
					that.unLock();
					if(res.error==0){
						location.href="/index.php?r=moponcard/bindok&ocid="+data.ocid;
					}else{
						weuiAlert(res.msg);
					}
                },
                onError: function(xmlHttp) {
                     that.unLock();
                }, // 当访问出错，比如网络连接不上、解析内容失败时触发，超时也会触发
                onTimeout: function(xmlHttp) { }, // 超时触发
                onAbort: function() {} // 网络中断时触发
             });
             
          }
		});
		wechat('off').init();
    }

    //-------------绑定事件------------------
    var bindEvents = function() {
		 touch.on(nodeList.button, 'tap', evtFuncs.bindcard);
		// nodeList.cardnum.addEventListener("input",evtFuncs.formatcard,false);
	}

    //-------------自定义函数----------------
    var custFuncs = {
 		inputFormatter:function(value){
			var v = value.replace(/\s+/g, '').replace(/[^0-9]/gi, '')
			var matches = v.match(/\d{4,16}/g);
			var match = matches && matches[0] || ''
			var parts = []
			for (i=0, len=match.length; i<len; i+=4) {
				parts.push(match.substring(i, i+4))
			}
			if (parts.length) {
				return parts.join(' ')
			} else {
				return value
			}
		}
    }

    //-------------一切从这开始--------------
    var init = function(_data) {

        data = _data;
        // 根据数据初始化模块
        // opts["render"]({ "title": data["title"] });

        // 找到所有带有node-name的节点
        nodeList = parseModule(node);
        // 子模块实例化
        initMod();
        // 绑定事件
        bindEvents();


    }

    //---------------暴露API----------------
    that.init = init;

    return that;
};